package net.servir.capacidades.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.servir.capacidades.model.CorreoMasivo;
import net.servir.capacidades.model.CorreoRegular;
import net.servir.capacidades.model.ParticipanteBusqueda;
import net.servir.capacidades.model.Test;
import net.servir.capacidades.model.Usuario;
import net.servir.capacidades.model.Sistema;
import net.servir.capacidades.model.jsp.JspRedactarCorreo;
import net.servir.capacidades.service.CapacidadesService;
import net.servir.capacidades.service.CensoService;
import net.servir.capacidades.service.CorreoService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Iterator;
import java.util.List;

@Controller
public class RedactarCorreoController {

	@Autowired 
	private CapacidadesService capacidadesService;
	@Autowired 
	private CensoService censoService;
	@Autowired 
	private CorreoService correoService;
	@RequestMapping("/redactarCorreo.htm")
	public @ModelAttribute("redactarCorreo")
	JspRedactarCorreo participanteBusqueda(HttpServletRequest request,HttpServletResponse response) throws Exception {
		
		//************************************************************
		// se obtiene el dni de la session activa
		//************************************************************
		HttpSession session = request.getSession();
		String cod_session =session.getId();

		String dniUsuario = null;
		if(session.getAttribute("dni") != null)			
			dniUsuario = session.getAttribute("dni").toString();

		//Obtenemos los datos del Usuario
		Usuario usuario = capacidadesService.GetUsuarioIdentificacion(dniUsuario);
		Boolean prueba = false;
		Boolean envio = false;
		String accion = "";
		String asunto = "";
		String cuerpo = "";
		String correo_pruebas = "";
		String codTipoCorreo = "";
		Integer id_correo = 0;
		Integer destinatarios = 0;
		
		if (usuario == null)
			return null;
			
		//************************************************************
		JspRedactarCorreo obj = new JspRedactarCorreo();
		
		accion = request.getParameter("accion");
		asunto = request.getParameter("asunto");
		correo_pruebas = request.getParameter("correo_pruebas");
		cuerpo = request.getParameter("texto");
		CorreoMasivo correo_masivo = new CorreoMasivo();
		obj.setTiposCorreo(correoService.obtenerTiposCorreoMasivo());
		
		if (request.getParameter("codTipoCorreo") != null)
			codTipoCorreo = request.getParameter("codTipoCorreo");		
		
		if (request.getParameter("id_correo")!=null && !request.getParameter("id_correo").equals(""))
			id_correo = Integer.parseInt(request.getParameter("id_correo"));
		
		if (request.getParameter("destinatarios")!=null && !request.getParameter("destinatarios").equals(""))
			destinatarios = Integer.parseInt(request.getParameter("destinatarios"));
		obj.setCod_tipo(codTipoCorreo);
		
//		System.out.println(dniUsuario);
//		System.out.println("Accion = "+accion);
		
		// obtenemos el correo masivo vigente
		if (accion.equals("REDACTAR"))
		{
			obj.setCorreoMasivo(censoService.getCorreoMasivo(dniUsuario));
			obj.setAccion("REFRESH");
		}
		else
		{
			correo_masivo.setId_correo(id_correo);
			correo_masivo.setCuerpo(cuerpo);
			correo_masivo.setAsunto(asunto.toLowerCase());
			correo_masivo.setCorreo_pruebas(correo_pruebas.toLowerCase());
			correo_masivo.setDestinatarios(destinatarios);
		}
		
		if (accion != null)
		{
			if (accion.equals("PRUEBA"))
			{
				prueba = true;
				accion = "GRABAR";
			}
			else if (accion.equals("ENVIO"))
			{
				envio = true;
				accion = "GRABAR";
			}
			
			if (accion.equals("GRABAR"))
			{
				censoService.grabarCorreo(correo_masivo);
				obj.setCorreoMasivo(correo_masivo);
				obj.setMensaje_usuario("Datos grabados correctamente");
			}
			else if (accion.equals("CHANGE_TIPO")) 
			{
				
				CorreoRegular correo = new CorreoRegular();  
				correo.setCod_tipo(codTipoCorreo);
				correo.setId_sistema(0);
				correo.setId_ambito(0);
				obj.setCorreoEdicion(correoService.getCorreoRegular(correo));
				//correo.setAsunto(correo.getAsunto().toLowerCase());
				correo_masivo.setCuerpo(obj.getCorreoEdicion().getCuerpo());
				obj.setCorreoMasivo(correo_masivo);
			}
		}
		String redirect = "";
		if (prueba)
		{
			censoService.ejecutarPrueba(correo_masivo.getId_correo());
			obj.setMensaje_usuario("La prueba de envio masivo se ejecuto correctamente");
		}

		if (envio)
		{
			censoService.ejecutarEnvio(correo_masivo.getId_correo(),dniUsuario);
			obj.setMensaje_usuario("El envio masivo se ejecuto correctamente");
			redirect = "correoGestion.htm";
		}
		
		if (!redirect.equals(""))
			response.sendRedirect(redirect);

		return obj;
	}
}
